<< Índice
2. Optimización de las funciones en dos y tres dimensiones usando el método de descenso por gradiente con condición inicial aleatoria¶
A continuación vamos a optimizar las funciones utilizando el método de descenso por gradiente. En inglés conocido como method of steepest descent.
Vamos a explorar cómo se llega a la fórmula iterativa de descenso por gradiente:
$X^{n+1}= X^{n}-\epsilon \nabla f(X^{n}) \;$ (2.1)
Cuando tenemos una función en varias variables, nos encontramos con que en un punto dado de la función, tenemos infinitas direcciones dónde medir la tasa de cambio, es decir, la derivada de la fución en cierta dirección. Generalemnte, nos interesa una dirección en específico, y para eso existe lo que se conoce como derivada direecional; por ejemplo, en una función de dos variables, está definida por:
$D_{u}f(x,y) = U.\nabla f(x,y) \;$ (2.2)
Donde $U$ es el vector unitario en la dirección deseada y $\nabla f(x,y)$ es el vector llamado gradiente, que en cada una de sus entradas contiene la derivada de la función $f$ con respecto a su i-ésima componente.
Si minimizamos la función de (2.2), es decir,
$Min \; U.\nabla f(x,y) \;$ (2.3)
Vemos que, aprovechando la siguiente propiedad geométrica: $A.B = \left \|A\right \|\left \| B \right \|\cos\theta \;$ (2.4) Siendo $\theta$ el ángulo entre los vectores A y B, entonces:
$U.\nabla f(x,y) = \left \| U \right \|\left \| \nabla f(x,y) \right \|\cos \theta =\left \| \nabla f(x,y) \right \|\cos \theta \;$ (2.5)
y así, el valor mínimo de (2.5) es cuando $\cos \theta = -1$ , es decir $\theta = \pi$, es decir, cuando $U$ está en dirección opuesta al $\nabla f(x,y)$.
En resúmen, tenemos un resultado interesantísimo: !El grado de mayor inclinación descendente del gradiente es justmanete la dirección opuesta al vector gradiente!
La anterior demostración fue parafraseada del cálculo de Leithold (1996, p. 979)
De esta forma, podemos ir descendiendo de forma iterativa, en dirección opuesta al gradiente, como se muestra en (2.1), con pasos de tamaño $\epsilon $. A esta constante se le conoce como taza de aprendizaje y se puede escoger de diferentes maneras de forma estratégica. El descenso por gradiente converge cuando cada elemento del gradiente es cero o en la práctica, muy cercano a cero, así lo aclara Goodfellow et al. en su libro introductorio, Deep Learning (2016, p. 84).
Descenso por gradiente en dos dimensiones¶
Ahora utilizamos un método numérico de descenso por gradiente para la función de Rosenbrock en dos dimensiones, definida por: $f(x_{1},x_{2}) = (1-x_{1})^2 +100(x_{2}-x_{1}^2)^2$, haciendo uso de $X^{n+1}= X^{n}-\epsilon \nabla f(X^{n})$
Veamos que al invocar la función con parámetros extremos, como máximo de iteraciones igual a 10 millones y un error de 10-e9, alcanzamos una solución muy cercana a la teórica, que está ubicada en (1,1).
Número de iteraciones:10000 Tolerancia soportada:1e-05 Tasa de aprendizaje (paso):0.001 Punto inicial aleatorio:[0.47625534281245696, -1.779770806241691] Solución alcanzada: [0.99438886 0.98878667] Número de soluciones obtenidas: 10002
Segunda corrida aleatoria:
Número de iteraciones:10000 Tolerancia soportada:1e-05 Tasa de aprendizaje (paso):0.001 Punto inicial aleatorio:[-0.6936733519220166, -0.9868736985694893] Solución alcanzada: [0.99432468 0.98865879] Número de soluciones obtenidas: 10002
Número de iteraciones:10000 Tolerancia soportada:1e-05 Tasa de aprendizaje (paso):0.001 Punto inicial aleatorio:[-0.9163811005080731, -0.4517645038533027, -0.6647706627498147] Solución alcanzada: [0.99999866 0.99999731 0.99999458] Número de soluciones obtenidas: 8370
Graficamos con respecto a X1 y X3
Graficamos con respecto a X2 y X3
Ahora puedes volver al índice y seguir explorando el contenido:
<< Índice